// 简化的确认对话框服务，使用原生confirm

interface ConfirmOptions {
  type?: 'info' | 'danger'
  title?: string
  message?: string
  confirmText?: string
  cancelText?: string
}

interface ConfirmResult {
  confirmed: boolean
  cancelled: boolean
}

class ConfirmDialogService {
  /**
   * 显示确认对话框
   * @param options 对话框配置选项
   * @returns Promise<ConfirmResult> 返回用户的选择结果
   */
  async show(options: ConfirmOptions = {}): Promise<ConfirmResult> {
    return new Promise((resolve) => {
      // 使用原生confirm作为临时解决方案
      const message = options.message || '您确定要执行此操作吗？'
      const confirmed = window.confirm(message)
      resolve({ confirmed, cancelled: !confirmed })
    })
  }

  /**
   * 显示信息确认对话框
   * @param message 确认消息
   * @param title 对话框标题
   * @returns Promise<boolean> 返回是否确认
   */
  async info(message: string, title?: string): Promise<boolean> {
    const result = await this.show({
      type: 'info',
      title: title || '信息确认',
      message
    })
    return result.confirmed
  }

  /**
   * 显示危险操作确认对话框
   * @param message 确认消息
   * @param title 对话框标题
   * @returns Promise<boolean> 返回是否确认
   */
  async danger(message: string, title?: string): Promise<boolean> {
    const result = await this.show({
      type: 'danger',
      title: title || '危险操作',
      message,
      confirmText: '删除',
      cancelText: '取消'
    })
    return result.confirmed
  }

  /**
   * 显示删除确认对话框
   * @param itemName 要删除的项目名称
   * @returns Promise<boolean> 返回是否确认删除
   */
  async delete(itemName: string = '此项目'): Promise<boolean> {
    return this.danger(
      `您确定要删除 ${itemName} 吗？删除后将无法恢复。`,
      '删除确认'
    )
  }

  /**
   * 显示保存确认对话框
   * @param message 确认消息
   * @returns Promise<boolean> 返回是否确认保存
   */
  async save(message: string = '您确定要保存当前修改吗？'): Promise<boolean> {
    return this.info(message, '保存确认')
  }

  /**
   * 显示退出确认对话框
   * @param message 确认消息
   * @returns Promise<boolean> 返回是否确认退出
   */
  async exit(message: string = '您确定要退出吗？未保存的修改将丢失。'): Promise<boolean> {
    return this.danger(message, '退出确认')
  }

}

// 创建全局实例
const confirmDialog = new ConfirmDialogService()

// 导出实例和类
export default confirmDialog
export { ConfirmDialogService }
export type { ConfirmOptions, ConfirmResult }
